/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.brain.cont.dto;

import com.brain.cont.view.util.ConstantesCont;
import com.brain.core.dto.ParametroDto;
import com.brain.core.dto.UsuarioDto;
import com.brain.sele.dto.ConvocatoriaDto;
import com.brain.sgc.dto.PersonaDto;
import com.brain.sgc.dto.PuestoDto;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.TableGenerator;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;
import javax.validation.constraints.Size;

/**
 *
 * @author Hvives
 */
@Entity
@Table(name = "TCONT_CONTRATO")
public class ContratoDto implements Serializable {

    private static final long serialVersionUID = 1L;
    // @Max(value=?)  @Min(value=?)//if you know range of your decimal fields consider using these annotations to enforce field validation
    @Id
    @GeneratedValue(strategy = GenerationType.TABLE, generator = "SEQ_CONTRATO")
    @TableGenerator(name = "SEQ_CONTRATO", table = "TCORE_ENTIDAD", pkColumnName = "NOMBRE", valueColumnName = "CORRELATIVO", pkColumnValue = "CONTRATO", allocationSize = 1)
    private Long id;
    @JoinColumn(name = "TIPO_CONTRATO", referencedColumnName = "ID")//Modalidad  de contratacion
    @ManyToOne
    private ParametroDto tipoContratoDto;
    @JoinColumn(name = "UNIDAD_ORGANICA", referencedColumnName = "ID")
    @ManyToOne
    private ParametroDto unidadOrganicaDto;
    @Column(name = "FECHA_SUSCRIPCION")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaSuscripcion;
    @Column(name = "FECHA_INICIO")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaInicio;
    @Column(name = "FECHA_FIN")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaFin;
    @JoinColumn(name = "SEDE", referencedColumnName = "ID")
    @ManyToOne
    private ParametroDto sedeDto;
    @JoinColumn(name = "CAT_REMUNERATIVA", referencedColumnName = "ID")
    @ManyToOne
    private ParametroDto catRemunerativaDto;
    @JoinColumn(name = "PUESTO", referencedColumnName = "ID")
    @ManyToOne
    private PuestoDto puestoDto;
    @JoinColumn(name = "TIPO_TRABAJADOR", referencedColumnName = "ID")
    @ManyToOne
    private ParametroDto tipoTrabajadorDto;
    @Column(name = "REM_BASICA")
    private BigDecimal remBasica;
    @Column(name = "REM_AL_CARGO")
    private BigDecimal remAlCargo;
    @Column(name = "REM_VARIABLE")
    private BigDecimal remVariable;
    @Column(name = "MOVILIDAD")
    private BigDecimal movilidad;
    @Column(name = "POR_REMUNERATIVO")
    private BigDecimal porRemunerativo;
    @Column(name = "COMISIONES")
    private BigDecimal comisiones;
    @Column(name = "ASIGNACION_FAMILIAR")
    private BigDecimal asignacionFamiliar;
    @Column(name = "RIESGO_CAJA")
    private BigDecimal riesgoCaja;
    @Size(max = 500)
    @Column(name = "OBSERVACIONES")
    private String observaciones;
    @JoinColumn(name = "ESTADO", referencedColumnName = "ID")
    @ManyToOne
    private ParametroDto estadoDto;
    @Column(name = "FECHA")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fecha;
    @Size(max = 100)
    @Column(name = "TERMINAL")
    private String terminal;
    @Size(max = 500)
    @Column(name = "INLINESTYLE")
    private String inlinestyle;
    @Size(max = 1000)
    @Column(name = "COMENTARIO")
    private String comentario;
    @Column(name = "USUARIO_SUSCRIPCION")
    private Long usuarioSuscripcion;
    @Size(max = 100)
    @Column(name = "TERMINAL_SUSCRIPCION")
    private String terminalSuscripcion;
    @Column(name = "USUARIO")
    private Long usuario;
    @JoinColumn(name = "PERSONA", referencedColumnName = "ID")
    @ManyToOne
    private PersonaDto personaDto;
    @Column(name = "ENV_PLANILLA")
    private Boolean envPlanilla;
    @Size(max = 500)
    @Column(name = "OBSERVACION_PLANILLERO")
    private String observPlanillero;
    @JoinColumn(name = "USUARIO_RECATEGORIZACION", referencedColumnName = "ID")
    @ManyToOne
    private UsuarioDto usuarioRecategDto;
    @Column(name = "FECHA_RECATEGORIZACION")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaRecategorizacion;
    @JoinColumn(name = "USUARIO_NIVELACION", referencedColumnName = "ID")
    @ManyToOne
    private UsuarioDto usuarioNivelacionDto;
    @Column(name = "FECHA_NIVELACION")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaNivelacion;
    @JoinColumn(name = "USUARIO_CESE", referencedColumnName = "ID")
    @ManyToOne
    private UsuarioDto usuarioCeseDto;
    @Column(name = "FECHA_CESE")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaCese;
    @Transient
    private String colorRow;
    @Column(name = "CALIFICACION")
    private Boolean calificacion;
    @Column(name = "FECHA_RECATEGORIZACION_REAL")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaRecategorizacionReal;
    @Column(name = "FECHA_NIVELACION_REAL")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaNivelacionReal;
    @Transient
    private Boolean isVigente;
    @Size(max = 1000)
    @Column(name = "OBSERVACION_CESE")
    private String observacionCese;
    @JoinColumn(name = "CP", referencedColumnName = "ID")
    @ManyToOne
    private ConvocatoriaDto convocatoriaDto;

    public ContratoDto() {
    }

    public ContratoDto(Long id) {
        this.id = id;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public ParametroDto getTipoContratoDto() {
        return tipoContratoDto;
    }

    public void setTipoContratoDto(ParametroDto tipoContratoDto) {
        this.tipoContratoDto = tipoContratoDto;
    }

    public ParametroDto getUnidadOrganicaDto() {
        return unidadOrganicaDto;
    }

    public void setUnidadOrganicaDto(ParametroDto unidadOrganicaDto) {
        this.unidadOrganicaDto = unidadOrganicaDto;
    }

    public Date getFechaSuscripcion() {
        return fechaSuscripcion;
    }

    public void setFechaSuscripcion(Date fechaSuscripcion) {
        this.fechaSuscripcion = fechaSuscripcion;
    }

    public Date getFechaInicio() {
        return fechaInicio;
    }

    public void setFechaInicio(Date fechaInicio) {
        this.fechaInicio = fechaInicio;
    }

    public Date getFechaFin() {
        return fechaFin;
    }

    public void setFechaFin(Date fechaFin) {
        this.fechaFin = fechaFin;
    }

    public ParametroDto getSedeDto() {
        return sedeDto;
    }

    public void setSedeDto(ParametroDto sedeDto) {
        this.sedeDto = sedeDto;
    }

    public ParametroDto getCatRemunerativaDto() {
        return catRemunerativaDto;
    }

    public void setCatRemunerativaDto(ParametroDto catRemunerativaDto) {
        this.catRemunerativaDto = catRemunerativaDto;
    }

    public PuestoDto getPuestoDto() {
        return puestoDto;
    }

    public void setPuestoDto(PuestoDto puestoDto) {
        this.puestoDto = puestoDto;
    }

    public ParametroDto getTipoTrabajadorDto() {
        return tipoTrabajadorDto;
    }

    public void setTipoTrabajadorDto(ParametroDto tipoTrabajadorDto) {
        this.tipoTrabajadorDto = tipoTrabajadorDto;
    }

    public BigDecimal getRemBasica() {
        return remBasica;
    }

    public void setRemBasica(BigDecimal remBasica) {
        this.remBasica = remBasica;
    }

    public BigDecimal getRemAlCargo() {
        return remAlCargo;
    }

    public void setRemAlCargo(BigDecimal remAlCargo) {
        this.remAlCargo = remAlCargo;
    }

    public BigDecimal getRemVariable() {
        return remVariable;
    }

    public void setRemVariable(BigDecimal remVariable) {
        this.remVariable = remVariable;
    }

    public BigDecimal getMovilidad() {
        return movilidad;
    }

    public void setMovilidad(BigDecimal movilidad) {
        this.movilidad = movilidad;
    }
    
    public BigDecimal getPorRemunerativo() {
        return porRemunerativo;
    }

    public void setPorRemunerativo(BigDecimal porRemunerativo) {
        this.porRemunerativo = porRemunerativo;
    }

    public Date getFechaRecategorizacion() {
        return fechaRecategorizacion;
    }

    public void setFechaRecategorizacion(Date fechaRecategorizacion) {
        this.fechaRecategorizacion = fechaRecategorizacion;
    }

    public BigDecimal getComisiones() {
        return comisiones;
    }

    public void setComisiones(BigDecimal comisiones) {
        this.comisiones = comisiones;
    }

    public BigDecimal getAsignacionFamiliar() {
        return asignacionFamiliar;
    }

    public void setAsignacionFamiliar(BigDecimal asignacionFamiliar) {
        this.asignacionFamiliar = asignacionFamiliar;
    }

    public BigDecimal getRiesgoCaja() {
        return riesgoCaja;
    }

    public void setRiesgoCaja(BigDecimal riesgoCaja) {
        this.riesgoCaja = riesgoCaja;
    }

    public String getObservaciones() {
        return observaciones;
    }

    public void setObservaciones(String observaciones) {
        this.observaciones = observaciones;
    }

    public ParametroDto getEstadoDto() {
        return estadoDto;
    }

    public void setEstadoDto(ParametroDto estadoDto) {
        this.estadoDto = estadoDto;
    }

    public Date getFecha() {
        return fecha;
    }

    public void setFecha(Date fecha) {
        this.fecha = fecha;
    }

    public String getTerminal() {
        return terminal;
    }

    public void setTerminal(String terminal) {
        this.terminal = terminal;
    }

    public String getInlinestyle() {
        return inlinestyle;
    }

    public void setInlinestyle(String inlinestyle) {
        this.inlinestyle = inlinestyle;
    }

    public String getComentario() {
        return comentario;
    }

    public void setComentario(String comentario) {
        this.comentario = comentario;
    }

    public Long getUsuarioSuscripcion() {
        return usuarioSuscripcion;
    }

    public void setUsuarioSuscripcion(Long usuarioSuscripcion) {
        this.usuarioSuscripcion = usuarioSuscripcion;
    }

    public String getTerminalSuscripcion() {
        return terminalSuscripcion;
    }

    public void setTerminalSuscripcion(String terminalSuscripcion) {
        this.terminalSuscripcion = terminalSuscripcion;
    }

    public Long getUsuario() {
        return usuario;
    }

    public void setUsuario(Long usuario) {
        this.usuario = usuario;
    }

    public PersonaDto getPersonaDto() {
        return personaDto;
    }

    public void setPersonaDto(PersonaDto personaDto) {
        this.personaDto = personaDto;
    }

    public Boolean getEnvPlanilla() {
        return envPlanilla;
    }

    public void setEnvPlanilla(Boolean envPlanilla) {
        this.envPlanilla = envPlanilla;
    }

    public String getObservPlanillero() {
        return observPlanillero;
    }

    public void setObservPlanillero(String observPlanillero) {
        this.observPlanillero = observPlanillero;
    }

    public UsuarioDto getUsuarioRecategDto() {
        return usuarioRecategDto;
    }

    public void setUsuarioRecategDto(UsuarioDto usuarioRecategDto) {
        this.usuarioRecategDto = usuarioRecategDto;
    }

    public UsuarioDto getUsuarioNivelacionDto() {
        return usuarioNivelacionDto;
    }

    public void setUsuarioNivelacionDto(UsuarioDto usuarioNivelacionDto) {
        this.usuarioNivelacionDto = usuarioNivelacionDto;
    }

    public Date getFechaNivelacion() {
        return fechaNivelacion;
    }

    public void setFechaNivelacion(Date fechaNivelacion) {
        this.fechaNivelacion = fechaNivelacion;
    }

    public UsuarioDto getUsuarioCeseDto() {
        return usuarioCeseDto;
    }

    public void setUsuarioCeseDto(UsuarioDto usuarioCeseDto) {
        this.usuarioCeseDto = usuarioCeseDto;
    }

    public Date getFechaCese() {
        return fechaCese;
    }

    public void setFechaCese(Date fechaCese) {
        this.fechaCese = fechaCese;
    }

    public String getColorRow() {
        return colorRow;
    }

    public void setColorRow(String colorRow) {
        this.colorRow = colorRow;
    }

    public Boolean getCalificacion() {
        return calificacion;
    }

    public void setCalificacion(Boolean calificacion) {
        this.calificacion = calificacion;
    }

    public Date getFechaRecategorizacionReal() {
        return fechaRecategorizacionReal;
    }

    public void setFechaRecategorizacionReal(Date fechaRecategorizacionReal) {
        this.fechaRecategorizacionReal = fechaRecategorizacionReal;
    }

    public Date getFechaNivelacionReal() {
        return fechaNivelacionReal;
    }

    public void setFechaNivelacionReal(Date fechaNivelacionReal) {
        this.fechaNivelacionReal = fechaNivelacionReal;
    }

    public Boolean getIsVigente() {
        if(estadoDto.getId().equals(ConstantesCont.Parametro.CONT_ESTADO_VIGENTE))
            isVigente = true;
        else
            isVigente = false;
        return isVigente;
    }

    public void setIsVigente(Boolean isVigente) {
        this.isVigente = isVigente;
    }

    public String getObservacionCese() {
        return observacionCese;
    }

    public void setObservacionCese(String observacionCese) {
        this.observacionCese = observacionCese;
    }

    public ConvocatoriaDto getConvocatoriaDto() {
        return convocatoriaDto;
    }

    public void setConvocatoriaDto(ConvocatoriaDto convocatoriaDto) {
        this.convocatoriaDto = convocatoriaDto;
    }  
    
    @Override
    public int hashCode() {
        int hash = 0;
        hash += (id != null ? id.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof ContratoDto)) {
            return false;
        }
        ContratoDto other = (ContratoDto) object;
        if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "com.brain.cont.dto.ContratoDto[ id=" + id + " ]";
    }
}
